package com.sob.bountyhunter.hud;

import java.awt.Point;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;

import com.sob.bountyhunter.entidades.Entidad;
import com.sob.bountyhunter.entidades.actores.Actor;
import com.sob.bountyhunter.inventario.Objeto;

public class VentanaInventario extends Ventana{

	protected Actor propietario;
	protected int seleccionadoIndice;
	protected Objeto seleccionadoObjeto;
	
	public VentanaInventario(float px, float py) {
		super(px, py, 1, 1);
		mostrar=false;
		arribaDerecha = new Point(3,0);
		puedeCerrarse=true;		
	}
	
	public VentanaInventario(Entidad e, float px, float py) {
		super(px, py, 1, 1);
		mostrar=false;
		arribaDerecha = new Point(3,0);
		puedeCerrarse=true;		
	}
	
	public Actor getPropietario(){
		return propietario;
	}
	public void setPropietario(Actor e){
		propietario=e;
	}

	public void update(GameContainer gameContainer, int deltaTime){
		super.update(gameContainer, deltaTime);				
		
		resetContenido();
		if(propietario!=null){
			
			if(propietario.inventario.getListaObjetos().size()!=0){
				componeContenido(gameContainer);
			}else{
				texto="<VACIO>";
				ancho=(int)(texto.length()*0.8);
				alto=1;
			}
			
			if(seleccionadoObjeto!=null){
				Gui.toolTip.componeContenido(seleccionadoObjeto);
				Gui.toolTip.setMostrar(true);
				Gui.toolTip.x=x+((ancho+1)*18);
				Gui.toolTip.y=y;
			}

		}
		
		//int mouseX = gameContainer.getInput().getMouseX();
		//int mouseY = gameContainer.getInput().getMouseY();
		
		//boolean mlbPulsado=gameContainer.getInput().isMouseButtonDown(0);

		/*
		//Si se pulsa el raton y hay objeto seleccionado intenta equiparlo
		if(mlbPulsado && seleccionadoIndice>=0 && seleccionadoObjeto!=null){
			propietario.inventario.equipaObjeto(seleccionadoObjeto);
		}*/		
	}

	protected String manejaSeleccionado(Objeto o, int indice, boolean seleccionado, String t){
		if(seleccionado){
			t="{cFFD800}"+t;
		}else{
			t="{cFFFFFF}"+t;
		}
		
		return t;		
	}
	protected String manejaEquipado(Objeto o, int indice, boolean seleccionado, String t){
		return t;
	}
	
	@Override
	public void resetContenido() {
		super.resetContenido();
		seleccionadoIndice=-1;
		seleccionadoObjeto=null;
	}
	
	protected void componeContenido(GameContainer gameContainer){
		
		int mouseX = gameContainer.getInput().getMouseX();
		int mouseY = gameContainer.getInput().getMouseY();

		int i=0;

		
		for(Objeto o: propietario.inventario.getListaObjetos()){
			//Obtiene el nombre del siguiente objeto
			String n=o.getNombre();
			
			//Si es el nombre mas largo lo guarda
			//if(n.length()>an) an=n.length();
			if(ancho==0) ancho=(int)(n.length()*0.9);

			//Si esta equipado lo marca
			if(propietario.inventario.isEquipado(o)){
				n=manejaEquipado(seleccionadoObjeto, seleccionadoIndice, true, n);
			}else{
				n=manejaEquipado(seleccionadoObjeto, seleccionadoIndice, false, n);
			}
			
			//Si el raton esta dentro del texto
			if(mouseX>x+18 && mouseX<x+(ancho*16) && mouseY>y+16+(i*16) && mouseY<y+16+((i+1)*16)){
				//Cambia el color y guarda la posicion y el objeto marcado
				seleccionadoIndice=i;
				seleccionadoObjeto=o;
				n=manejaSeleccionado(seleccionadoObjeto, seleccionadoIndice, true, n);
			}else{
				n=manejaSeleccionado(seleccionadoObjeto, seleccionadoIndice, false, n);
			}
			
			addLinea(n);
			i++;
		}		
	}
	
	public void render(GameContainer gameContainer, Graphics graphics){
		super.render(gameContainer, graphics);
	}
}
